      program Ex4a_Filon

      real*8 a,b,q,h,Integral,Integral0,eps,y
      real*8 Ac,Bc,Dc,sum1,sum2,Se,So
      integer i,n,k
      real,parameter::Pi=3.141592654
      a=0
      b=2*Pi
      eps=1.d-14
      Integral0=1
      n=1
      k=10

 77   h=(b-a)/(2*n)
      q=k*h
      
      Ac=(1/q)+((sin(2*q))/(2*q**2))-((2*(sin(q))**2)/(q**3))
      Bc=(1/(q**2))+(((cos(q))**2)/(q**2))-((sin(2*q))/(q**3))
      Dc=((4*sin(q))/(q**3))-((4*cos(q))/(q**2))
      
      sum1=0.
      do i=0,n
        sum1=sum1+y(a+(2.*i*h))*sin((k*a)+(2.*i*q))
      enddo
      Se=-(y(a)*sin(k*a))-(y(b)*sin(k*b))+(2.*sum1)
      
      sum2=0.
      do i=0,n
        sum2=sum2+y(a+(((2.*i)-1)*h))*sin((k*a)+(((2.*i)-1)*q))
      enddo
      So=sum2
      
      Integral=h*((Ac*y(a)*cos(k*a))-(Ac*y(b)*cos(k*b))+(Bc*Se)+(Dc*So))
      
      if (abs(Integral0-Integral).lt.eps) then
        print*,'n = ',n,' Integral = ',Integral
        goto 99
      else
        Integral0=Integral
        n=n+1
        goto 77
      endif
      
 99   continue
      end

      real*8 function y(x)
      real*8 x
      y=exp(-x)
      return
      end